/**
 * 从上到下
 * 从右到左遍历一个树
 * 
 * 一般的二叉树层次遍历时上到下，左到右，这里不同
 * 层次遍历还是和之前的一样，但是入队的时候同时入栈
 * 只有当这一层的所有节点都入栈，才从栈顶弹出
 */

#include"BiTree.h"
#include<stack>
#include<queue>
using namespace std;
void visit(BiTree* p){}
void invertLevel(BiTree*bt){
    stack<BiTree*> s;
    queue<BiTree*> q;
    BiTree* p;
    if(bt!=nullptr){
        s.push(bt);//将根节点入栈
        while (!q.empty())
        {
            p=q.front();//出队，入栈
            q.pop();
            s.push(p);//这里只入栈，最后s保存着所有的节点，最后在输出
            if(p->left){
                q.push(p->left);
            }
            if(p->right){
                q.push(p->right);
            }
            /* code */
        }
        while (s.empty()==false)
        {
            p=s.top();
            s.pop();
            visit(p);
        }
        
        
    }
}